//Definition File - Obstacle.h
#ifndef Obstacle_H
#define Obstacle_H

#include <Classes.hpp>
#include <gl\gl.h>
#include <gl\glu.h>

#include "PV.h"
#include "Lista.h"

/*
 * Abstract class Obstacle. We declare here the common behaviour of the son classes
 * (i.e., accesors and constructors). The classes that need to be solved particularly
 * for each obstacle are declared as virtual.
 */
class Obstacle {
   protected:
      Lista<PV>* vertexList;
      Lista<PV>* coverVertexList;

   public :
      Obstacle(  );
      ~Obstacle(  );
      Lista<PV>* getVertexList(  );
      Lista<PV>* getCoverVertexList(float width);
      void renderCover(float width);
      virtual void draw(  )  = 0 ;
      virtual void drawPerimeter(  )  = 0 ;
      virtual void drawCover(float width) = 0;
      virtual bool colision( PV punto , PV vector , PV& salida )  = 0 ;
};


#endif
